#ifndef EAGERLAZY
#define EAGERLAZY

class EagerLazyApp {
public:
	EagerLazyApp(void);
	~EagerLazyApp();

	bool cycle(KEYBOARDSTATE *k);
	void draw(SDL_Surface *screen);

	void learn_example(FeatureTerm *example);
	void reduce_models(void);

	FeatureTerm *classify(FeatureTerm *f);
	float distance(FeatureTerm *f1,FeatureTerm *f2);
	bool get_box(FeatureTerm *f1,float *x1,float *x2,float *y1,float *y2);

	void fill_test(void);

private:
	int m_state;
	TTF_Font *m_font;

	Ontology *m_o;
	FTKBase *m_domain_model;
	FTKBase *m_case_base;
	FTKBase *m_working_memory;

	// 
	int m_n_examples;
	int m_n_classes;
	int m_max_models;
	List<FeatureTerm> m_unseen_examples;
	List<FeatureTerm> m_models;

	int m_test_precission;
	FeatureTerm **m_test_matrix;
	float m_test_error;
};

#endif